package com.project.mapper.core;

import com.project.mapper.common.BaseMapper;
import com.project.model.core.Area;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface AreaMapper extends BaseMapper<Area, Long> {

    /**
     * 获取根节点
     *
     * @return
     */
    List<Area> getRoots();

    /**
     * 根据父节点Id查询所有的根子节点
     *
     * @param parentId
     * @return
     */
    List<Area> findChildrenRootNodes(Long parentId);

    /**
     * 查询所有的根节点
     *
     * @return
     */
    List<Area> findOnlyRoots();

    /**
     * 根据treepath模糊查询所有的子节点
     *
     * @param treePath
     * @return
     */
    List<Area> findChildrenNodes(String treePath);

    /**
     * 批量更新
     *
     * @param areaList
     */
    void updateNodes(@Param("areaList") List<Area> areaList);

    /**
     * 级联获取省市
     *
     * @return
     */
    List<Area> selectParent();

    /**
     * 根据城市名称和级别获取区域对象
     *
     * @param area 区域对象 - 城市名称,城市级别
     * @return
     */
    Area getByNameAndGrade(@Param("area") Area area);

    /**
     * 获取所有地区
     *
     * @return
     */
    List<Area> getAllRegions();

    /**
     * 获取省
     *
     * @return
     */
    List<Area> getProvinces();

    /**
     * 获取市
     *
     * @return
     */
    List<Area> getCitys();

    /**
     * 获取区/县
     *
     * @return
     */
    List<Area> getDistricts();

    /**
     * 根据城市名获取城市
     *
     * @param cityName 城市名
     * @return
     */
    Area getAreasByName(String cityName);
}